package cn.tedu.mybatis.mapper;

import cn.tedu.mybatis.pojo.User;
import cn.tedu.mybatis.pojo.UserVO1;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;

import java.sql.Connection;
import java.sql.PreparedStatement;

/**
 * 首先当前Mapper接口需要让MyBatis提供对应的实现类,因此需要在当前接口上
 * 使用MyBatis提供的注解:@Mapper
 * SpringBoot启动时，会调用MyBatis提供的starter，这里MyBatis就会扫描当前项目中
 * 所有被@Mapper标注的接口，并提供实现类(怎么实现的？？？答:动态代理 CGLIB)
 * 并且根据该接口中的方法上注解来具体实现对应方法的逻辑
 */
@Mapper
public interface UserMapper {
    /**
     * 该方法用于将User表示的用户信息插入到blog库的user表中
     *
     * @param user
     * @return 表示执行后影响了表中多少条记录
     */
    /*@Insert(
            "INSERT INTO user(username,password,nickname,created) "+
            "VALUES (#{username},#{password},#{nickname},#{created})"
    )*/
    int insert(User user);
    //如果我们自己实现Mapper,insert方法代码逻辑大致如下
    /*int insert(User user){
        try (Connection connection = DBUtil.getConnection();){
            String sql = "INSERT INTO user(username,password,nickname,created) "+
                    "VALUES(?,?,?,?)";
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1,user.getUsername());
            ps.setString(2,user.getPassword());
            ps.setString(3,user.getNickname());
            ps.setDate(4,user.getCreated());
            return ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }*/
    //根据用户id查询该用户及他的所有博客信息
    UserVO1 selectUserAndBlogById(Integer id);
}
